python中万物皆对象。数据类型是对象,函数是对象,模块也是对象。
python所有的类都继承自最基础类object
OOP编程理念
object oriented programming
把对象当作程序的基本单元,对象包括数据和操作数据的函数
本质是把问题解决抽象为以对象为中心的计算机程序
重点在于高抽象的复用代码
可以提高协作产量
面向过程VS面向对象
面向过程:以解决问题的过程步骤为核心编写程序
面向对象:以问题对象构建和交互为核心编写程序
面向对象三个特征
封装 (Encapsulation)
属性和方法的抽象,用数据和操作数据的方法来形成对象逻辑
属性的抽象:对类的属性进行定义、隔离及保护
方法的抽象:对类的方法进行定义、隔离及保护
目标是形成一个类对外可操作属性和方法的接口
继承 (Inheritance)
代码复用的高级抽象,用对象之间的继承关系来形成代码复用
实现了以类为单位的高抽象级别代码复用
继承是字类几乎完全使用原有类属性与方法的过程
多态 (Polymorphism)(存疑)
方法灵活性的抽象,让对象的操作更加灵活,更多复用代码
参数类型的多态:一个方法能处理多个类型的能力
参数形式的多态:一个方法能接受多个参数的能力
多态是OOP的一个传统概念,python天然支持多态,不需要特殊语法
面向对象术语
类 class
逻辑抽象和产生对象的模板,一组变量和函数的特定组合
对象 object
独立的存在 或 作为目标的事物
独立性:对象都存在清晰的边界
功能性:对象都能表现出一些功能、操作或行为
交互性:对象之间存在交互,如运算和继承对象分为类对象class object和实例对象 instance object
类对象是维护每个python类基本信息的数据结构,全局只有一个
实例对象是python类实例化后产生的对象,简称’对象‘。实例对象可以生成多个
属性
存储数据的‘变量’
包括类属性、 实例属性
方法
操作数据的‘函数’
包括 类方法、实例方法、自由方法、静态方法、保留方法
实例化
从类到对象的过程,所有”对象”都源于某个“类”
继承相关:基类、派生类、字类、父类、超类,重写
命名空间:程序元素作用域的表达
构造和析构:生成对象和删除对象的过程